#!/usr/bin/env python3

#!/usr/bin/env python3

from DrissionPage import ChromiumPage, ChromiumOptions
import time
import socket
import configparser
import os

# 1. 构造配置文件的完整路径
home_dir = os.path.expanduser("~")
config_path = os.path.join(home_dir, ".bit-srun3000-chrome-driver.ini")

# 2. 读取配置文件并获取凭据
config = configparser.ConfigParser()
try:
    # config.read() 会尝试读取文件，如果文件不存在则不会报错
    if not config.read(config_path):
        raise FileNotFoundError(f"配置文件未找到：{config_path}")

    # 获取 'credentials' 节下的用户名和密码
    username = config.get('credentials', 'username')
    password = config.get('credentials', 'password')

except (FileNotFoundError, configparser.NoSectionError, configparser.NoOptionError) as e:
    print(f"错误：读取配置文件失败。请检查文件是否存在或格式是否正确。详细信息：{e}")
    exit()

# 3. 登录逻辑
while True:
    # 使用 os 模块执行系统 ping 命令来检测网络连通性
    # '-c 1' 表示发送一个数据包，'-W 1' 表示超时时间为1秒
    if os.system('ping -c 1 -W 1 bing.com') == 0:
        print('network ok')
    else:
        print('network broken')

        # 使用无头模式创建页面对象
        co = ChromiumOptions(read_file=False).headless().set_argument('--no-sandbox')
        page = ChromiumPage(co)

        try:
            # 跳转到登录页面
            page.get('http://10.0.0.55/')
            
            # 定位并输入凭据
            page.ele('#username').input(username)
            page.ele('#password').input(password)
            
            # 点击登录按钮
            page.ele('#login').click()
            
            # 确认登出按钮出现，表示登录成功
            page.ele('#logout')
            page.quit()
        except Exception as e:
            print(f"登录过程中发生错误：{e}")
            page.quit()

        print('network reconnected')
    time.sleep(60)
